package entity;

import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "Facturas")
public class FacturaBD implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@EmbeddedId
	private FacturaId pk;
	@Column
	private Date fecha;

	@Embedded
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "legajo")
	private MozoBD mozo;

	@Embedded
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "codigo")
	private MedioPagoBD medioPago;

	
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	@JoinColumns( { @JoinColumn(name = "idFactura"),
			@JoinColumn(name = "idRestaurante") })
	private List<ItemFacturaBD> items;

	public FacturaBD() {
		this.pk = new FacturaId();
		this.items = new LinkedList<ItemFacturaBD>();
	}

	public void setIdFactura(Integer numero, int numeroRestaurante) {
		this.pk.setNumero(numero);
		this.pk.setIdRestaurante(numeroRestaurante);		
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public MozoBD getMozo() {
		return mozo;
	}

	public void setMozo(MozoBD mozo) {
		this.mozo = mozo;
	}

	public MedioPagoBD getMedioPago() {
		return medioPago;
	}

	public void setMedioPago(MedioPagoBD medioPago) {
		this.medioPago = medioPago;
	}

	public void setItems(List<ItemFacturaBD> items) {
		this.items = items;
	}

	public List<ItemFacturaBD> getItems() {
		return items;
	}

	public FacturaId getpk() {
		return this.pk;
	}

}
